/*
在所有不大于30000的自然数范围内讨论一个问题：已知n条线段，把端点依次输入给你，然后有m（≤30000）个询问，
每个询问输入一个点，要求这个点在多少条线段上出现过。
首先输入两个数n和m,然后有n行，每行两个数，代表线段的两个端点坐标，之后有m行，每行一个数，代表一个询问。
输出询问的结果。

样例输入
4 4
0 3
2 6
4 6
5 7
1
3
5
8
样例输出
1
2
3
0
 */
package com.yuan.algorithms.arithmetic_2;

import java.util.Scanner;

/**
 * @author YouYuan
 * @author E-mail:1265161633@qq.com
 * @version 创建时间：2015年8月2日 上午11:16:58
 * @version 说明:
 * 思路一：
 * 我们将每个线段拆成(L,+1)，(R+1,-1)的两个事件点,之后扫描就可以完成题目的询问。
 * 
 * 思路二：
 * 存储每条线段的起点和终点，再判断询问的点是否在线段上，是的话累加。
 */
public class 点在多少条线段上 {

	static Scanner sc = new Scanner(System.in);
	public static void main(String[] args) {
		while(sc.hasNext()) {
			int n = sc.nextInt();
			int m = sc.nextInt();
			int[] arr = new int[30005];
			while(--n>=0) {
				int l = sc.nextInt();
				int r = sc.nextInt();
				arr[l]++;//线段起点，记录线段引用+1
				arr[r+1]--;//线段终点，记录线段引用-1
			}
			while(--m>=0) {
				int q = sc.nextInt();
				int sum = 0;
				//扫描记录的线段数据，累加到q即是q在线段上的数量
				for (int i = 0; i <= q; i++) {
					sum += arr[i];
				}
				System.out.println(sum < 0 ? 0 : sum);
			}
		}
	}

}
